lexer grammar XMLLexer;

options {
  language = Java;
}

@header {
  package practpl.diez;
}

@members {
     
     private ArrayList<RecognitionException> errors = new ArrayList<RecognitionException>();
     public ArrayList<RecognitionException> getErrors() {
        return errors;
     }
     @Override
     public void reportError (RecognitionException e) {
        String msg = getErrorMessage(e, getTokenNames());
        System.err.println(msg);
        errors.add(e);
     }
     
     boolean abierta = false;
 
}

fragment LETRA: ('a'..'z')|('A'..'Z');
fragment DIGITO: ('0'..'9');

IDENT : (LETRA|'.')+;
BLANCO : (' '|'\t'|'\r\n'|'\n') {skip();};

AETIQUETA : '<' {abierta = true;};
CETIQUETA : '>' {abierta = false;};
AETIQUETACIERRE: '</' {abierta = true;};

COMENTARIO: '<!--' (.)* '-->' {skip();};